home *** CD-ROM | disk | FTP | other *** search
- /*
- * Class - the class class; the default meta-class.
- *
- * Copyright © John Wainwright 1988
- *
- * Supers : None.
- *
- * Class Vars : None
- *
- * Class Methods : None
- *
- * Methods :
- *
- * print - prints the class name
- * supers - list of all the supers for this class.
- * subs - list of all the sub-classes for this class.
- */
-
- #include "oic.h"
- #include "generics.h"
-
- class Class; /* Class class */
- class classes; /* list of all classes */
-
- /* -------------------- Class Instance methods ---------------------------- */
-
- static list
- get_supers(list, class)
- list list;
- class class;
- {
- register classlist *cl;
-
- for (cl = class->c_superclasses; cl != END; cl = cl->cl_next)
- {
- if (class != cl->cl_class)
- push(list, cl->cl_class);
- get_supers(list, cl->cl_class);
- }
-
- return list;
- }
-
- static object
- _supers(self)
- register class self;
- {
- return get_supers(New(List, END), self);
- }
-
- static object
- _subs(self)
- class self;
- {
- register object list;
- register class o;
-
- list = New(List, END);
- for (o = classes; o != END; o = o->c_next)
- if (o != self && IsAKindOf(&self, o))
- push(list, o);
-
- return list;
- }
-
- static
- _print(self)
- class self;
- {
- printf("%s\n", self->c_name);
- }
-
- static object
- _repList(self)
- class self;
- {
- return New(String, self->c_name);
- }
-
- /* ------------------- Init the Class class ------------------------------- */
-
- /*
- * note that Class has already been made - the ONLY function
- * that should call this function is _InitRootClasses in obj.c
- */
-
- _InitClass()
- {
- AddMethods(Class,
- supersGeneric, _supers,
- subsGeneric, _subs,
- printGeneric, _print,
- repListGeneric, _repList,
- END);
- }
-
-